package com.lxw.multidb.modules.es.util;

import org.apache.commons.lang3.StringUtils;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import java.util.stream.Collectors;

/**
 * @author <a href="https://t.tannn.cn/">tan</a>
 * @version V1.0
 * @date 2025/1/22 14:33
 */
public class EsStrUtil {

    /**
     * 字段按 || 分隔，并去掉空串，去掉重复数据
     *
     * @param str 带分割字符串
     **/
    public static List<String> str2ListNotRepeat(String str) {
        if (StringUtils.isBlank(str)) {
            return new ArrayList<>();
        }
        return Arrays.stream(str.split("\\|\\|")).filter(StringUtils::isNotBlank).distinct().collect(Collectors.toList());
    }

    /**
     * 字段按 || 分隔，并去掉空串，保留重复
     *
     * @param str 带分割字符串
     * @return java.util.List<java.lang.String>
     * @author lxw
     * @date 2024/11/13 14:35
     **/
    public static List<String> str2ListAllowRepeat(String str) {
        if (StringUtils.isBlank(str)) {
            return new ArrayList<>();
        }
        return Arrays.stream(str.split("\\|\\|")).filter(StringUtils::isNotBlank).collect(Collectors.toList());
    }

    /**
     * 字段按 || 分隔，并去掉空串，去掉重复数据，转换为Long类型
     *
     * @param str 带分割字符串
     * @return java.util.List<java.lang.Long>
     * @author lxw
     * @date 2024/11/13 14:35
     **/
    public static List<Long> str2LongListNotRepeat(String str) {
        if (StringUtils.isBlank(str)) {
            return new ArrayList<>();
        }
        return Arrays.stream(str.split("\\|\\|"))
                .filter(StringUtils::isNotBlank)
                .distinct()
                .map(Long::valueOf)
                .collect(Collectors.toList());
    }
}
